package Jihe;

import java.util.ArrayList;
import java.util.List;
import java.util.function.Function;
import java.util.function.Predicate;

public class SiDaJieKou {
    public static void main(String[] args) {
//        foreach();

//        String str = "mylover are you";
        //      String s = strUpp("i love my home",str->str.toUpperCase());
       // System.out.println(s);
//        String s = strUpp(str,sa->sa.toUpperCase());//sa 表示的就是str，为了不重名
//        System.out.println(s);
        predicateTest();
    }
    private static void predicateTest(){
        List<String> list1 = new ArrayList<>();
        list1.add("wwad");
        list1.add("jrtjr");
        list1.add("213r");
        list1.add("j61r");
        List<String> result = filter(list1,(s)->s.contains("j")); //传入参数String s ，调用contains方法返回是否有“s”字符串的函数
        result.forEach(System.out::println);



    }
    //断言接口，表示
    private static List<String> filter(List<String> list, Predicate<String> p){
        List<String> results = new ArrayList<>();
        for(String s:list){
            if(p.test(s)){ //测试是否满足要求
                results.add(s);
            }
        }
        return results;
    }

    //接口2表示接受一个参数并返回一个结果的函数:Function<返回的类型,类型>(){ return .apply() }
    private static String strUpp(String str, Function<String , String> f){
        return f.apply(str);
    }
    /*
     *接口1消费者接口
     *JDK1.8新的迭代方法
     * 传入Consume消费者接口参数
     * lambda表达式来进行遍历(Consumer)->{}
     * .foreach(sout) 新方法;
     */
    private static void foreach(){
        List<String> list = new ArrayList<String>();
        list.add("张三");
        list.add("李四");
        list.add("王五");
        list.add("赵六");
//           list.forEach(s-> System.out.println(s));
        list.forEach(System.out::println);
    }
    //结果供应商
}
